//
// Created by iguilty on 2022-01-13.
//

#ifndef DESIGN_PATTERN_CPP_PROXY_H
#define DESIGN_PATTERN_CPP_PROXY_H

class Subject{
public:
    virtual ~Subject();
    virtual void Request() = 0;
protected:
    Subject();
};

class ConcreteSubject:public Subject{
public:
    ConcreteSubject();
    ~ConcreteSubject();
    void Request();
};

class Proxy {
public:
    Proxy();
    Proxy(Subject* sub);
    ~Proxy();
    void Request();

protected:
private:
    Subject* _sub;
};


#endif //DESIGN_PATTERN_CPP_PROXY_H
